package com.sigmatrix.h5.dao;

import java.util.List;

import com.sigmatrix.h5.dto.DisDealersData;
import com.sigmatrix.h5.entity.DisDealer;
import com.sigmatrix.h5.exception.DaoException;
import com.sigmatrix.sc.jdbc.common.dao.Dao;

/**
 * 
 *@ClassName: DistributionDealersDao
 *@Description: 经销商表
 *@author MH
 *@date 2017年9月27日 上午10:57:52
 */
public interface DisDealerDao extends Dao<DisDealer, Integer>{
	
	/**
	 * 
	 *@Title: findFirstLevelParent
	 *@Description: 查询父级一级经销商
	 *@return DistributionDealers
	 *@author MH
	 *@date 2017年9月27日 下午12:49:43
	 *@param id
	 *@return
	 */
	DisDealer findFirstLevelParent(Integer id);
	
	/**
	 * 
	 *@Title: findParents
	 *@Description: 查询所有父级经销商，包括自己
	 *@return List<DistributionDealers>
	 *@author MH
	 *@date 2017年9月29日 下午2:32:04
	 *@param id
	 *@return
	 */
	List<DisDealer> findParents(Integer id);
	
	List<DisDealer> findParents(String  dealerCode);
	
	/**
	 * 
	 *@Title: findByIds
	 *@Description: 
	 *@return List<DistributionDealers>
	 *@author MH
	 *@date 2017年10月9日 下午5:46:15
	 *@param ids
	 *@return
	 */
	List<DisDealer> findByIds(Object ... ids);
	
	/**
	 * 
	 *@Title: selectCountByDealerName
	 *@Description:通过名称查询数量，精确查询 
	 *@return int
	 *@author MH
	 *@date 2017年11月8日 下午1:29:06
	 *@param dealerName
	 *@return
	 */
	int selectCountByDealerName(String dealerName);
	
	/**
	 * 
	 *@Title: findByPromotionCode
	 *@Description: 通过推广码查询
	 *@return DistributionDealers
	 *@author MH
	 *@date 2017年11月8日 下午2:48:40
	 *@param promotionCode
	 *@return
	 */
	DisDealer findByPromotionCode(String promotionCode);
	
	/**
	 * 
	 *@Title: findChildren
	 *@Description: 查询子节点
	 *@return List<DistributionDealers>
	 *@author MH
	 *@date 2017年12月5日 下午3:47:19
	 *@param id
	 *@return
	 */
	List<DisDealer> findChildren(Integer id);

	List<DisDealer> findParentsByPromotionCode(String promotionCode);
	/**
	 * 查询自身和初级子节点的id
	 * @param dealerId
	 * @return
	 */
	List<Integer> findFirstChildIdAnSelf(Integer dealerId);
	
	
	
	
	
	/**
	 * 分销app合并分支开始-------------------------------------
	 */
	
	
	/**
	 * 
	 *@Title: findById
	 *@Description: TODO()
	 *@return DisDealers
	 *@author gaomingkai
	 *@date 2017年12月26日 下午5:56:06
	 *@param code
	 *@param enterpriseCode
	 *@return
	 *@throws DaoException
	 */
	DisDealer findByCode(final String code, final String enterpriseCode) throws DaoException;
	
	/**
	 *@Title: findById
	 *@Description: 根据主键查找经销商
	 *@return DisDealers
	 *@author youjun
	 *@date 2017-06-24 17:30:21
	 *@param id
	 *@throws DaoException 
	 */
	DisDealer findById(final Integer id, final String enterpriseCode) throws DaoException;
	
	/**
	 *@Title: findListByCondition
	 *@Description: 根据条件查找经销商列表
	 *@return List<DisDealers>
	 *@author youjun
	 *@date 2017-06-24 17:30:21
	 *@param dealers
	 *@param enterpriseCode
	 *@return
	 *@throws DaoException
	 */
	List<DisDealer> findListByCondition(final DisDealer dealers, final String enterpriseCode) throws DaoException;

	/**
	 *@Title: findPartColumnListByCondition
	 *@Description: 
	 *@return List<DisDealersData>
	 *@author youjun
	 *@date 2017年6月27日 上午11:31:03
	 *@param dealers
	 *@param enterpriseCode
	 * @throws DaoException 
	 */
	List<DisDealersData> findPartColumnListByCondition(DisDealer dealers, String enterpriseCode) throws DaoException;
	
	/**
	 *@Title: findByIdPart
	 *@Description: 根据id查询，返回部分字段
	 *@return DisDealersData
	 *@date 2017年9月8日 下午4:02:04
	 *@param id
	 *@param eseCode
	 *@throws DaoException
	 */
	DisDealersData findByIdPart(final Integer id, final String eseCode) throws DaoException;
	
	/**
	 *@Title: findChildPart
	 *@Description:查询子集
	 *@return List<DisDealersData>
	 *@date 2017年9月8日 下午4:02:35
	 *@param dealerId
	 *@param eseCode
	 *@throws DaoException
	 */
	List<DisDealersData> findChildPart(final Integer dealerId, final String eseCode) throws DaoException;
	/**
	 * 
	 *@Title: findChildDealerPart
	 *@Description:查询子经销商
	 *@return List<DisDealersData>
	 *@author gaomingkai
	 *@date 2017年11月30日 下午1:24:34
	 *@param dealerId
	 *@param eseCode
	 *@return
	 *@throws DaoException
	 */
	List<DisDealersData> findChildDealerPart(final Integer parendId, final String eseCode) throws DaoException;
	
	
	/**
	 * 分销app合并分支结束-------------------------------------
	 */
	
}
